<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
<script>

  /*
  * 数据结构和算法 : 重不重要 : 特别重要  P5 : 中级工程师   P6 : 编程能力 + 解决问题的能力 + 协作能力
  *
  *
  *
  * 数据结构 : 数据 + 结构
  * - 数组 对象
  * - 数组 链表 栈 堆 树 图  数组+对象   双向链表 diff vue : computed : 缓存 链表 二叉树 深度优先遍历
  * 算法 : 一般都是纯函数 通过参数就可以确定结果
  * - 计算方法
  * - 排序  去重 交集 并集
  * - 数字 10 2 3 4 1  力扣
  *
  * */

  // 0 -num 所有的值加起来
  function add(num) {
    let sum = 0; // 1
    for (let i = 1; i < num; i++) { // num次
      sum += i; // num次
    }
  }

  //  O(N)

  // let arr [[1,2,3],[4,5,6]]  二维数组 最大的值
  // 二维数组
  // 时间复杂度
  function getMax(nums) {
    let max = 0; // 1次
    // N = nums.length
    for (let i = 0; i < nums.length; i++) { // N
      for (let j = 0; j < nums[i].length; j++) { // m * N
        if (max < nums[i][j]) { // m*N
          max = nums[i][j]  // m*N
        }
      }
    }
    return max;//1
  }

  // N^2
  // O(N^2)

  // console.log(getMax([[1, 10, 3], [4, 5, 6]]));

  /*
    O(1) O(N) O(N^2) O(2^N) O(logN) O(N!)
    生物学科中的 “细胞分裂” 即是指数级增长。初始状态为 $1$ 个细胞，
    分裂一轮后为 $2$ 个，分裂两轮后为 $4$ 个，……，分裂 $N$  轮后有 $2^N$ 个细胞。
    时间复杂度 : N  2^N : O(2^N)
   */
  function cellDivsion(N) {
    if (N <= 0) return 1;
    let count1 = cellDivsion(N - 1);
    let count2 = cellDivsion(N - 1);
    return count1 + count2;
  }

  console.log(cellDivsion(7));

</script>
</body>
</html>
